In recent years, expert systems have been used in many applications which have traditionally been carried out using complex algorithmic approaches. These applications include medical diagnosis, financial analysis, electronics design, nuclear power plant monitoring and control, oil exploration, etc. Expert systems have also been used for interpretation, prediction, planning, monitoring, debugging, repair, and instruction. The surge in popularity of expert systems is mainly due to their simplicity in modeling complicated systems by Production Rules (i.e. IF/THEN rules) and to their capability in recommending appropriate actions by inference (or search).
FIG. 1 shows a conceptual diagram illustrating a conventional expert system 1 which comprises two modules. A first module 2 is a Knowledge Base, which comprises a group of Production Rules (which typically are IF/THEN statements) and Facts. A second module 3 is an Inference Engine which makes decisions using the Production Rules and the given Facts. The expert system receives Inputs and generates Outputs using the Knowledge Base 2 and Inference Engine 3.
To date, however, the success of known existing expert systems has been somewhat diminished because of the following reasons:
First, known expert systems are too "brittle" for real-world applications which are noisy and uncertain. Specifically, the performance of an expert system rapidly degrades when the value of an Input is close to the Input bounds.
Clearly, such brittleness is inappropriate for many applications (e.g. stock market investment, medical diagnosis, etc.). Although it is known to improve the robustness of an expert system by increasing the number of Production Rules, this slows down the decision-making process and aggravates maintenance problems (due to the sheer number of Production Rules to be kept track of).
Secondly, existing expert systems are usually too slow in decision-making for high-speed dynamic systems. This is because the Inference Engine needs to match the Facts to the Production Rules to make a decision. This pattern search can be very exhaustive, repetitive, and extremely time-consuming. This is illustrated, for example, in the extensive backward and/or forward chaining operations required, as discussed in Guide to Expert Systems, Donald A. Waterman, Edison-Wesley, 1986, Chapter 7, pages 66-69. Forward-chaining is very slow, because it is necessary to check all the rules. It will be appreciated that the known technique of backward-chaining is more efficient but involves a more complicated Inference Engine.
Because known expert systems are both brittle and relatively slow, they are rarely used in real-time applications.
Related Invention No. 2, which is directed to a method for structuring an expert system utilizing one or more neural networks, offers an excellent alternative solution to the above-mentioned two problems of existing expert systems. However, existing expert systems often have required very significant time and money to develop, so in many cases it would be imprudent to discard them outright.
Therefore, there is a substantial need to be able to readily convert an existing expert system into an expert system comprising one or more neural network that are both robust enough and fast enough to handle a wide spectrum of business and real-time applications.